All software developers, in whatever language and platform, and whatever methodology, realize that there is some software that they don't want to write and that already exists. Developers that write their own software conventionally will use published artifacts as building blocks in writing code within a larger project, so as to avoid re-writing software that already exists. For any given task, there may be multiple artifacts that already exist that can possibly do what the programmer/developer needs to do.
However, locating an appropriate existing artifact for a particular project can be difficult. A software artifact that is appropriate for one project may not be particularly appropriate for the same use in another project. Further, there may be multiple artifacts that are appropriate for a particular project but to a varying degree. Determining which of many artifacts are most appropriate can be challenging.